닫은. 이 질문은 세부 사항이나 명확성이 필요합니다. 현재 답변을 받고 있지 않습니다. 이 질문을 개선하고 싶으십니까? 이 게시물을 편집하여 세부 정보를 추가하고 문제를 명확히하십시오. 1 년 전에 문을 닫았습니다. 이 질문 개선 코드 챌린지를 수행 중이며 시작 인덱스를 지정하고 시작 인덱스에서 첫 번째 (3 개 또는 임의의 길이가 될 수 있음) 값만 가져 와서 배열에서 처음 3 개 값을 가져오고 싶습니다. 이 코드를 시도했는데 작동하지만 코드 구조가 너무 길어서 이해하기 쉽도록 짧게 만들 수 있습니다. int n = 10; 이중 서명 = new double [] {1, 1, 1}; double [] ret = 새로운 double [n]; 이중 합 = 0; ret [0] = 서명 [0]; ret [1] = 서명 [1]; ret [2] = 서명 [2]; int x, i; for (i = 0; i
2021-01-31 08:20:43
LINQ를 사용하여 다음과 같이 시도 할 수 있습니다. var values = array.Skip (index) . 테이크 (n) .ToArray (); 여기서 index는 첫 번째 항목의 인덱스이고 n은 선택하려는 항목의 수입니다. 예 : https://dotnetfiddle.net/Pk1rwY 참고로. LINQ를 사용한다고해서 코드가 더 빨라지는 것은 아닙니다. 코드가 얼마나 성능이 좋은지 평가하려면 BenchmarkDotNet과 같은 것을 사용해야합니다. | Linq 솔루션 없음 : 개인 정적 T [] Extract(T [] 소스, int fromIndex, int 길이) { if (null == 소스) throw new ArgumentNullException (nameof (source)); 그렇지 않으면 (fromIndex <0) 새로운 ArgumentOutOfRangeException (nameof (fromIndex), "From Index는 음수가 아니어야합니다."); else if (길이 <0) 새로운 ArgumentOutOfRangeException (nameof (length), "길이는 음수가 아니어야합니다."); if (fromIndex> = source.Length || 길이 == 0) 새로운 T [0] 반환; T [] result = new T [Math.Min (length, source.Length-fromIndex)]; Array.Copy (소스, fromIndex, 결과, 0, 결과. 길이); 반환 결과; } 그때 double [] 서명 = 새로운 double [] {0, 1, 2, 3, 4, 5}; double [] ret = 추출 (서명, 3, 2); Console.Write (string.Join ( ",", ret)); 결과: 3, 4 | 질문에서 .Take 및 .Skip 연산자를 활용해야합니다. var result = array.Skip (startingIndex) .Take (numberOfElements); 따라서 코드에서 약간 다른 작업, 즉 합산 요소를 시도하는 것 같습니다. .Sum 연산자가 도움이 될 수 있습니다. | 찾고있는 답변이 아닙니까? c # arrays linq 태그가 지정된 다른 질문을 찾아 보거나 직접 질문하십시오.